﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Cotizav.Presentacion.WinForms.Equipo
{
    public partial class BuscarEquipo : Form
    {
        private Dictionary<string, string> listBusquedaPor;
        private Entidades.Equipo result;

        public Entidades.Equipo Result
        {
            get { return result; }
            set { result = value; }
        }

        public BuscarEquipo()
        {
            InitializeComponent();

            listBusquedaPor = new Dictionary<string, string>();
        }

        private void LoadListBuscarPor()
        {
            //Obtener lista de propiedades de un objeto
            //cmbBuscarPor.DataSource = (new Entidades.Cliente()).GetType().GetProperties().ToList();
            //cmbBuscarPor.DisplayMember = "Name";

            listBusquedaPor.Clear();
            listBusquedaPor.Add("codigo", "Código");
            listBusquedaPor.Add("nombreEquipo", "Nombre del equipo");

            cmbBuscarPor.DataSource = new BindingSource(listBusquedaPor, null);
            cmbBuscarPor.ValueMember = "Key";
            cmbBuscarPor.DisplayMember = "Value";
            cmbBuscarPor.SelectedIndex = -1;
        }

        private void BuscarEquipo_Load(object sender, EventArgs e)
        {
            LoadListBuscarPor();
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            if (cmbBuscarPor.SelectedIndex >= 0)
            {
                string argEquipo = cmbBuscarPor.SelectedValue.ToString();
                LogicaNegocio.EquipoBLL equipoBLL = new LogicaNegocio.EquipoBLL();
                gridBusqueda.DataSource = equipoBLL.Buscar(argEquipo, txtValor.Text);
            }
        }

        private void txtValor_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter || e.KeyCode == Keys.Return)
            {
                btnBuscar_Click(sender, EventArgs.Empty);
            }
        }

        private void gridBusqueda_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            if (gridBusqueda.Rows.Count > 0)
            {
                result = gridBusqueda.SelectedRows[0].DataBoundItem as Entidades.Equipo;
                this.DialogResult = DialogResult.OK;
            }
        }

        private void gridBusqueda_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            if (gridBusqueda.DataSource != null)
            {
                gridBusqueda.Columns["IdEquipo"].Visible = false;
                gridBusqueda.Columns["IdModelo"].Visible = false;
                gridBusqueda.Columns["IdSucursal"].Visible = false;
                gridBusqueda.Columns["CodigoEquipo"].HeaderText = "Código";
                gridBusqueda.Columns["NombreEquipo"].HeaderText = "Nombre del equipo";
                gridBusqueda.Columns["Serie"].Visible = false;
                gridBusqueda.Columns["Marca"].Visible = false;
                gridBusqueda.Columns["EsAlquiler"].Visible = false;
                gridBusqueda.Columns["EsVenta"].Visible = false;
                gridBusqueda.Columns["FechaRegistro"].Visible = false;
                gridBusqueda.Columns["FechaModificacion"].Visible = false;
                gridBusqueda.Columns["UsuarioRegistro"].Visible = false;
                gridBusqueda.Columns["UsuarioModificacion"].Visible = false;
                gridBusqueda.Columns["Activo"].Visible = false;
            }
        }

        private void cmbBuscarPor_SelectionChangeCommitted(object sender, EventArgs e)
        {
            if (cmbBuscarPor.SelectedIndex >= 0)
            {
                string selValue = cmbBuscarPor.SelectedValue.ToString();

                switch (selValue)
                {
                    case "codigo":
                        txtValor.CharacterCasing = CharacterCasing.Upper;
                        break;
                    case "nombreEquipo":
                        txtValor.CharacterCasing = CharacterCasing.Normal;
                        break;
                }

                txtValor.Focus();
            }
        }

        private void cmbBuscarPor_DropDown(object sender, EventArgs e)
        {
            txtValor.ResetText();
        }
    }
}
